package com.southgis.ibase.sql.builder;

import com.southgis.ibase.sql.utils.DatabaseFunc;

/**
 * 表描述信息（抽象类），子类包括原生简单表、sql表
 * @author dnnyo
 *
 */
public abstract class Table
{
	DatabaseFunc func;
	public void setDatabaseFunc(DatabaseFunc func)
	{
		this.func=func;
	}

	String alias;
	
	public Table(String alias)
	{
		this.alias=alias;
	}
	public String getAlias()
	{
		return alias;
	}
	
	public TableColumn column(String name, String alias)
	{
		return new TableColumn(this, name, alias);
	}
	
	/**
	 * 检查是否匹配表名，不区分大小写。
	 * @param name 要匹配的名字，不能为null
	 * @return
	 */
	public boolean matchName(String name)
	{
		if(alias==null) return false;
		return alias.equalsIgnoreCase(name);
	}
	/**
	 * 生成sql片段
	 * @param section 在哪个区段(SqlBuilder.BUILD_SECTION_XXX)：0-select，1-where|having，2-XBy，3-join|from
	 * @param sb
	 */
	public abstract void toSql(int section, StringBuilder sb);

}